From 714fd2eafb73275fea0ed71f3f6c763975dd9aa0 Mon Sep 17 00:00:00 2001 From: "Richard M. Stallman" Date: Tue, 1 Jun 1993 08:07:38 +0000 Subject: [PATCH] (x_set_menu_bar_lines): Use FRAME_NEW_HEIGHT and ..._WIDTH. (x_window): In XSetClassHint, use a shortened version of the frame name. --- src/xfns.c | 24 +++++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/src/xfns.c b/src/xfns.c index 8e2884f83b8..65fada912d1 100644 --- a/src/xfns.c +++ b/src/xfns.c @@ -946,8 +946,16 @@ x_set_menu_bar_lines (f, value, oldval) FRAME_MENU_BAR_LINES (f) = nlines; x_set_menu_bar_lines_1 (f->root_window, nlines - olines); - x_set_window_size (f, FRAME_WIDTH (f), - FRAME_HEIGHT (f) + nlines - olines); + /* Use FRAME_NEW_WIDTH, HEIGHT so as not to override a size change + made by the user but not fully reflected in the Emacs frame object. */ + x_set_window_size (f, + (FRAME_NEW_WIDTH (f) + ? FRAME_NEW_WIDTH (f) + : FRAME_WIDTH (f)), + ((FRAME_NEW_HEIGHT (f) + ? FRAME_NEW_HEIGHT (f) + : FRAME_HEIGHT (f)) + + nlines - olines)); } /* Change the name of frame F to ARG. If ARG is nil, set F's name to @@ -1476,6 +1484,8 @@ x_window (f) XSetWindowAttributes attributes; unsigned long attribute_mask; XClassHint class_hints; + char *shortname; + char *p; attributes.background_pixel = f->display.x->background_pixel; attributes.border_pixel = f->display.x->border_pixel; @@ -1501,7 +1511,15 @@ x_window (f) screen_visual, /* set in Fx_open_connection */ attribute_mask, &attributes); - class_hints.res_name = (char *) XSTRING (f->name)->data; + /* X resource names should not have periods in them. + So copy the frame name, discarding from the first period onward. */ + shortname = (char *) alloca (XSTRING (f->name)->size + 1); + bcopy (XSTRING (f->name)->data, shortname, XSTRING (f->name)->size + 1); + for (p = shortname; *p; p++) + if (*p == '.') + *p = 0; + + class_hints.res_name = shortname; class_hints.res_class = EMACS_CLASS; XSetClassHint (x_current_display, FRAME_X_WINDOW (f), &class_hints); -- 2.30.2